package org.jeecg.modules.system.util;

import cn.hutool.core.collection.ListUtil;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.compress.utils.Lists;
import org.apache.commons.lang.StringUtils;
import org.jeecg.common.constant.YsReptileConstant;
import org.jeecg.common.dto.YctdInfoDTO;
import org.jeecg.common.enmus.YctdEnum;
import org.jeecg.common.enmus.YctdInfoEnum;
import org.jeecg.common.util.HttpClientDownPage;
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
import org.jsoup.nodes.Element;
import org.jsoup.select.Elements;
import org.springframework.stereotype.Component;

import java.time.LocalDateTime;
import java.util.List;

@Slf4j
@Component
public class ZYCTDDataUtil {


    /**
     * 药材天地网-市场快讯
     *
     * @param document
     * @return List<NewsDTO>
     */
    public static List<YctdInfoDTO> marketAlertList(Document document) {
        List<YctdInfoDTO> resultList= Lists.newArrayList();
        //获取到所有的一级标题，根据一级标题拿到不同的详细列表数据，这里以快讯为例
        Elements li = document.select(".door").select(".hover").select("li");
        for (Element el : li) {
            String title = el.select("a").text();
            String url = el.select("a").attr("href");
            String tyToName = YctdEnum.findTyToName(1);
            if (tyToName.equals(title)){
                Document dataHtml = Jsoup.parse(HttpClientDownPage.sendGet(url));
                Elements dataList = dataHtml.select(".zixun-list-content").select(".zixun-item");
                for (Element element : dataList) {

                    // 数据详细地址
                    String dataUrl = element.select("dt").select("a").attr("href");
                    dataUrl = YsReptileConstant.ZYCTD_URL + dataUrl;
                    // 简介信息
                    String text = element.select("dt").select("span").text();
                    // 内容信息
                    String content = element.select(".content-text").select("span").text();
                    // 发布时间=
                    String time = element.select(".item-footer").select("span").first().text();
                    // todo 以下价格、供应、功效 需要跳转到其他页面、故这里只存一个url，如果需要这些数据到时候通过定时任务来定时同步到数据库
                    Elements spanItem = element.select(".item-mbs").select("a");
                    StringBuffer sb = new StringBuffer();
                    for (Element a : spanItem) {
                        String text1 = a.text();
                        String href = YsReptileConstant.ZYCTD_URL + a.attr("href");
                        String nameToField = YctdInfoEnum.findNameToField(text1);
                        if (StringUtils.isBlank(nameToField)){
                            sb.append(text1+":"+href);
                            sb.append(",");
                        } else{
                            sb.append(nameToField+":"+href);
                            sb.append(",");
                        }
                    }
                    YctdInfoDTO build = YctdInfoDTO.builder()
                            .htmlUrl(dataUrl).title(text).content(content).time(time).createdTime(LocalDateTime.now())
                            .infoUrl(sb.toString()).build();
                    resultList.add(build);
                    log.info("组装的数据:{}",build);
                }
            }
        }
        return resultList;
    }
}
